[hwi-middle] WEEK 01 solutions#2373
Conversation
- Contains Duplicate - Two Sum - Top K Frequent Elements
- House Robber
- Longest Consecutive Sequence
|
안녕하세요! 제가 C++은 잘 모르지만 리뷰를 해 보겠습니다 ㅎㅎ 잘 부탁드립니다! |
sadie100
left a comment
There was a problem hiding this comment.
전반적인 풀이들이 아주 깔끔해서 C++를 처음 본 저도 이해하기 쉬웠습니다 ㅎㅎ
고생하셨습니다!!
There was a problem hiding this comment.
저도 비슷한 방식으로 풀었는데요! 찾아보니 이 문제는 bucket sort 풀이도 많이 사용되는 접근이라고 하더라고요.
핵심 아이디어는 숫자 → 등장 횟수를 계산해서 map을 만드는 것까지는 동일하고, 이후 정렬을 하는 대신 등장 횟수를 인덱스로 사용하는 bucket 배열을 만드는 방식이라고 합니다.
nums 길이만큼의 bucket 배열을 만들고 map을 순회하면서 각 숫자를 해당 빈도의 bucket에 넣은 뒤, bucket을 뒤에서부터 순회하면서 상위 k개의 숫자를 추출하는 아이디어라네요!
현재 풀이에서는 (num, frequency)를 정렬하는 단계 때문에 시간복잡도가 O(N log N)이 되는데, bucket sort를 사용하면 빈도 계산 O(N) + bucket 순회 O(N) 정도로 처리할 수 있어서 전체 시간복잡도를 O(N)으로 줄일 수 있다고 합니다.
다만 지금 풀이도 충분히 깔끔하고 이해하기 좋은 접근인 것 같습니다 ㅎㅎ 좀 더 최적화할 수 있는 아이디어를 공유해봤습니다.
There was a problem hiding this comment.
공유해주셔서 감사합니다. 해당 풀이도 공부 기록으로 남겨두어야겠네요!
답안 제출 문제
작성자 체크 리스트
In Review로 설정해주세요.검토자 체크 리스트
Important
본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!